import { AppCtx } from '../core/index';
import { log } from '../utils/index';

/**
 * 应用启动装饰器
 * @returns 返回启动类装饰函数
 */
export function KoaBootApplication() {
    return function (target: Function) {
      // 创建启动类全局上下文
      AppCtx.ctx = target;
  
      // 准备项目配置
      prepareConfig(target);
  
      // 扫描注入ioc容器
      log.info('扫描class注入ioc容器开始');
      ComponentScan()(target);
      log.info('扫描class注入ioc容器过程结束');
  
      // 准备工作完成后运行实例
      log.info('准备工作完成后运行实例');
      final(target);
    };
  }